package com.mapper;

import com.bean.ShoppingCart;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface ShoppingCartMapper {
    /**
     * 根据购物车项 ID 获取购物车项信息
     * @param cartId 购物车项的唯一标识
     * @return 对应的购物车项对象，如果未找到则返回 null
     */
    ShoppingCart getShoppingCartById(Integer cartId);

    /**
     * 分页模糊查询用户的购物车信息
     * @param userId 用户的唯一标识
     * @param keyword 模糊查询关键字，可用于匹配书籍标题、作者等信息
     * @param offset 分页偏移量
     * @param limit 每页记录数
     * @return 符合条件的购物车项列表
     */
    List<ShoppingCart> getShoppingCartsByUserIdWithKeyword(Integer userId, String keyword, int offset, int limit);

    /**
     * 统计用户符合模糊查询条件的购物车项数量
     * @param userId 用户的唯一标识
     * @param keyword 模糊查询关键字，可用于匹配书籍标题、作者等信息
     * @return 符合条件的购物车项数量
     */
    int countShoppingCartsByUserIdWithKeyword(Integer userId, String keyword);

    /**
     * 插入新的购物车项信息
     * @param shoppingCart 包含新购物车项信息的对象
     * @return 插入操作影响的行数，成功插入返回 1，失败返回 0
     */
    int insertShoppingCart(ShoppingCart shoppingCart);

    /**
     * 根据购物车项 ID 更新购物车项信息
     * @param shoppingCart 包含要更新的购物车项信息的对象，其中 cartId 用于定位记录
     * @return 更新操作影响的行数，成功更新返回 1，失败返回 0
     */
    int updateShoppingCart(ShoppingCart shoppingCart);

    /**
     * 根据购物车项 ID 删除购物车项信息
     * @param cartId 要删除的购物车项的唯一标识
     * @return 删除操作影响的行数，成功删除返回 1，失败返回 0
     */
    int deleteShoppingCartById(Integer cartId);
}